Field of the Invention
The present invention generally relates to digital photography, and, more specifically, to a system and method for optimizing image quality in a digital camera.
Description of the Related Art
The popularity of digital photography has skyrocketed over the past decade, primarily due to the inclusion of digital cameras in mobile devices such as cell phones. As digital camera technology improves, resulting in an increase of digital image resolution, an increasing number of people have come to rely entirely on cell phone-based digital cameras for all photography needs. Users want the ability to snap quick photos that have professional quality, and, consequently, most modern digital cameras now include image signal processors (ISPs) that implement numerous image processing algorithms and can be used to improve the quality of digital images.
Typically the acquisition into the camera of images from a sensor is called “image capture” and the process of applying image processing algorithms to the raw images to produce optimized images is called “image rendering”. Algorithms that provide such processing are called “rendering algorithms” and include but are not limited to noise reduction, automatic white balance adjustment, tone correction, sharpening, color enhancement, etc. Typically the precise operation of each rendering algorithm is controlled by specific arguments. For example, a color saturation algorithm may be controlled by an argument which is the percentage of saturation above or below some standard value. These algorithms may be implemented entirely in hardware, in firmware on Digital Signal Processors, in special code on programmable engines like a Graphics Processing Unit (GPU), or in software or some combination of the above.
Each such algorithm is typically designed and implemented by an algorithm designer manually based on the designer's experience with computational photography. As such, many designers have become experts in narrow fields related to image quality. For example, a given designer may be considered an expert in designing algorithms for “noise reduction” or for controlling “white balance.” Given the vast number of algorithms required to produce high quality images, and the varied issues in processing raw images from digital sensors, many digital camera vendors employ an army of algorithm designers, where each designer has extensive experience designing and tuning algorithms to correct for or enhance one highly specific issue. In many cases, these algorithms require input from a user of the digital camera in order to function properly. For example, a given algorithm may require information describing the type of scene a user wishes to photograph, such as “beach” or “forest.” The algorithm then adjusts certain parameters according to this user-provided information.
One problem with the current state of digital photography is that digital camera vendors typically invest a large amount of time and money designing algorithms to be included in ISPs, and nonetheless, many digital cameras still require significant user interaction to produce images of reasonable quality. This arrangement is less than ideal because, despite this large investment of time and money in ISP development, most digital camera vendors still fall short of producing high-quality images with the “point and shoot” functionality that users desire.
Accordingly, what is needed in the art is a more effective technique for implementing image processing algorithms in a digital camera.
In another line of technology development, a rich set of Machine Learning techniques has been developed that enables a Machine Learning Engine (MLE) to be trained to implement arbitrarily complicated functions and algorithms. Using techniques such as Supervised Learning, an MLE such as an Artificial Neural Network (ANN), or Support Vector Machine (SVM), or one of numerous other MLE's, can be trained to categorize new as yet unseen data. An MLE can also be trained to implement a transformation from new as yet unseen input into output that closely matches the desired ideal output as represented by the training data.